package dao;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Session;

public interface GenericDao<T, ID extends Serializable> {

	ID save(T t);

	List<T> queryAll();

	List<T> queryByHql(String queryString);

	List<T> queryByNamedParam(String queryString, String[] paramNames,Object[] values);

	T queryById(ID id);

	void delete(ID id);

	void delete(T t);

	void update(T t);

	void saveOrUpdate(T t);

	void merge(T t);

	Session getS();

	List<T> queryForPage(String queryString, int offset, int length);

	int getAllRowCount(String queryString);

}
